package ru.passivemoney.manage.job;

import java.util.concurrent.atomic.AtomicBoolean;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.slf4j.MDC;

import ru.passivemoney.common.Consts;

/**
 * Класс регулярно запускающий обрабтку Jobs с интервалом {@linkplain #TIME_INTERVAL_FOR_SCHEDULLER}
 * @author artem
 *
 */
public class Scheduller {
	
	private static final Logger logger = LoggerFactory.getLogger(Scheduller.class);
	
	private static AtomicBoolean runJobs = new AtomicBoolean(true);
	
	public static void start(){
		new Thread(new Runnable(){

			@Override
			public void run() {
				try{
					MDC.put("ROUTINGKEY", "Scheduller");
					while(runJobs.get()){
						try {
							Thread.sleep(Consts.TIME_INTERVAL_FOR_SCHEDULLER);
						} catch (InterruptedException e) {
							logger.error("ERROR IN SCHEDULLER.", e);
						}
						JobsRunner.runJobs();
					}
				}finally{
					MDC.remove("ROUTINGKEY");
				}
				
			}}).start();
		
	}
	
	/**
	 * 
	 * @param runJobs - <b>true</b>, тогда регулярный запуск обраотки Jobs осуществляется; <b>false</b> - Jobs не обрабатываются. 
	 */
	public static void setRunJobs(boolean runJobs){
		Scheduller.runJobs.set(runJobs);
	}

}
